Many computing environments or infrastructures provide for shared access to pools of configurable resources (such as compute services, storage, applications, networking devices, etc.) over a communications network. One type of such a computing environment may be referred to as a cloud computing environment. Cloud computing environments allow users, and enterprises, with various computing capabilities to store and process data in either a privately owned cloud or on a publicly available cloud in order to make data accessing mechanisms more efficient and reliable. Through the cloud environments, software applications or services may be distributed across the various cloud resources in a manner that improves the accessibility and use of such applications and services for users of the cloud environments.
When deploying distributed applications, designers and operators of such applications oftentimes need to make many operational decisions: which cloud the application is to be deployed (such as a public cloud versus a private cloud), which cloud management system should be utilized to deploy and manage the application, whether the application is run or executed as a container or a virtual-machine, can the application be operated as a serverless function. In addition, the operator may need to consider regulatory requirements for executing the application, whether the application is to be deployed as part of a test cycle or part of a live deployment, and/or if the application may require more or fewer resources to attain the desired key-performance objectives. These considerations may oftentimes be referred to as policies in the deployment of the distributed application or service in the computing environments.
Consideration of the various policies for the deployment of a distributed application may be a long and complex procedure as the effect of the policies on the application and the computing environment is balanced to ensure a proper deployment. Such balancing of the various policies for the distributed application may, in some instances, be performed by an operator or administrator of cloud environments, an enterprise network, or the application itself. In other instances, an orchestrator system or other management system may be utilized to automatically select services and environments for deployment of an application based on a request. Regardless of the deployment system utilized, application and continuous monitoring of policies associated with a distributed application or service in a cloud computing environment (or other distributed computing environment) may require significant administrator or management resources of the network. Further, many policies for an application may conflict in ways that make the application of the policies difficult and time-consuming for administrator systems.